import { mapState } from "vuex";
import { store } from "@/store";

// 尝试将用户在根目录中的store/index.js的vuex的state变量，全部加载到全局变量中
let $uStoreKey = [];
try {
  $uStoreKey = store.state ? Object.keys(store.state) : [];
} catch (e) { };

module.exports = {
  created() {
    // 将vuex方法挂载到$u中
    // 使用方法：如果要修改vuex的state中的user.name变量为"史诗" => this.$u.vuex("user.name", "史诗");
    // 如果要修改vuex的state的version变量为1.0.1 => this.$u.vuex("version", 1);
    this.$u.vuex = (name, value) => {
      this.$store.commit("$uStore", {
        name, value
      });
    }
  },
  computed: {
    // 将vuex的state中的所有变量，解构到全局混入的mixin中
    ...mapState($uStoreKey)
  }
};